Camera system encoder/decoder architecture

ABSTRACT

An image capture accelerator performs accelerated processing of image data. In one embodiment, the image capture accelerator includes accelerator circuitry including a pre-processing engine and a compression engine. The pre-processing engine is configured to perform accelerated processing on received image data, and the compression engine is configured to compress processed image data received from the pre-processing engine. In one embodiment, the image capture accelerator further includes a demultiplexer configured to receive image data captured by an image sensor array implemented within, for example, an image sensor chip. The demultiplexer may output the received image data to an image signal processor when the image data is captured by the image sensor array in a standard capture mode, and may output the received image data to the accelerator circuitry when the image data is captured by the image sensor array in an accelerated capture mode.

CROSS REFERENCE TO RELATED APPLICATIONS

This application is a continuation of U.S. application Ser. No.14/488,283, filed Sep. 17, 2014, now patent Ser. No. ______, whichapplication claims the benefit of and priority to U.S. ProvisionalApplication No. 61/885,412, filed Oct. 1, 2013, all of which areincorporated by reference herein in their entirety. This application isrelated to U.S. patent application Ser. No. 13/940,215, U.S. patentapplication Ser. No. 13/940,221, and U.S. patent application Ser. No.14/189,973, the contents of which are incorporated herein by referencein their entirety.

BACKGROUND

1. Field of Art

The disclosure generally relates to the field of image capture systems,and in particular to accelerating image capture.

2. Description of the Related Art

As image sensor technology improves, image sensors are becoming able tocapture images and videos at increasingly higher resolutions and framerates. However, Image Signal Processing (ISP) ASICs often suffer frombandwidth limitations preventing them from effectively processing imagesensor frames at the spatial, temporal, and bit-depth resolutions andframe rates at which they are captured. In digital camera systems, suchISP bottlenecks can hinder camera capability. Furthermore, even if anISP has the capability to keep up with an associated image sensor, theISP may use more power than a typical camera battery can provide.

BRIEF DESCRIPTION OF DRAWINGS

The disclosed embodiments have other advantages and features which willbe more readily apparent from the detailed description, the appendedclaims, and the accompanying figures (or drawings). A brief introductionof the figures is below.

FIG. 1 illustrates one embodiment of a system for image captureacceleration.

FIG. 2 illustrates an alternative embodiment of the system for imagecapture acceleration.

FIG. 3 illustrates an alternative embodiment of the system for imagecapture acceleration.

FIG. 4 illustrates one embodiment of an image signal processor (ISP)configured to process image data in an accelerated manner via firmware,without the need for a dedicated image capture accelerator (ICA).

FIG. 5 illustrates an example reordering of a Bayer color array to a YUV4:2:2 format.

FIG. 6 illustrates one embodiment of a system for image captureacceleration.

FIG. 7 illustrates an embodiment of a system for simultaneouslyproducing four color components of Bayer-pattern image data.

FIG. 8 illustrates an embodiment of image compression via waveletcompression.

FIG. 9 illustrates an embodiment of image compression by combiningmultiple image compression techniques.

FIG. 10 illustrates an alternative embodiment of image compression bycombining multiple image compression techniques.

FIG. 11 illustrates an embodiment of generating an output image datafile for storage.

FIG. 12 illustrates an embodiment of a system for generating an outputimage data file.

FIGS. 13A-B illustrate embodiments of a direct memory access engine.

FIG. 14 illustrates an embodiment of a system for motion detection andestimation using decimated image data.

FIG. 15 illustrates an example of decimated image data.

FIG. 16 illustrates an example of electronic image stabilizationperformed by an image capture accelerator.

FIG. 17 illustrates an embodiment of an image capture accelerator withtwo entropy coders.

FIG. 18a illustrates a first embodiment of an image capture acceleratormemory sharing architecture.

FIG. 18b illustrates a second embodiment of an image capture acceleratormemory sharing architecture.

FIG. 19 illustrates an embodiment of an image capture accelerator withon-chip transcoding functionality.

DETAILED DESCRIPTION

The Figures (FIGS.) and the following description relate to preferredembodiments by way of illustration only. It should be noted that fromthe following discussion, alternative embodiments of the structures andmethods disclosed herein will be readily recognized as viablealternatives that may be employed without departing from the principlesof what is claimed.

Reference will now be made in detail to several embodiments, examples ofwhich are illustrated in the accompanying figures. It is noted thatwherever practicable similar or like reference numbers may be used inthe figures and may indicate similar or like functionality. The figuresdepict embodiments of the disclosed system (or method) for purposes ofillustration only. One skilled in the art will readily recognize fromthe following description that alternative embodiments of the structuresand methods illustrated herein may be employed without departing fromthe principles described herein.

Configuration Overview

An image capture accelerator provides for the accelerated processing ofimage data.

In one example embodiment, an image capture system architecture isconfigured to incorporate an image capture accelerator (ICA). The ICA isconfigured to address limited ISP bandwidths and/or excessive systempower usage while enabling the capture of images at high frame rates. Inone example embodiment, the ICA is a device that sidesteps traditionalISP image processing in an image capture system (such as a digitalcamera) in order to increase the bandwidth and/or decrease the power useof the image capture system. The ICA can be a dedicated ASIC, can beimplemented within an image sensor or ISP chip architecture, or can beimplemented using existing hardware, firmware, and/or software.

In one embodiment, an image capture accelerator includes acceleratorcircuitry including a pre-processing engine and a compression engine.The pre-processing engine is configured to perform acceleratedprocessing on received image data, and the compression engine isconfigured to compress processed image data received from thepre-processing engine. In one embodiment, the image capture acceleratorfurther includes a demultiplexer configured to receive image datacaptured by an image sensor array, for example on an image sensor chip.The demultiplexer outputs the received image data to an image signalprocessor (ISP) when the image data is captured by the image sensorarray in a first capture mode (“standard mode”), and outputs thereceived image data to the accelerator circuitry when the image data iscaptured by the image sensor array in a second capture mode(“accelerated mode”). It should be noted that the ICA may processcaptured image data in additional modes as understood to those of skillin the art, such as a time lapse mode.

In one embodiment, the standard capture mode is associated with thecapture of images at a first frame rate and first resolution, and theaccelerated capture mode is associated with the capture of images at asecond frame rate and second resolution. In some embodiments, the firstframe rate is lower than the second frame rate, and/or the firstresolution is lower than the second resolution. Accordingly, when thecapture of frames is desired at a higher resolution and/or frame ratethan the ISP can accommodate, the ICA can operate in the acceleratedmode, and the demultiplexer can output captured image data to theaccelerator circuitry.

Image data processed by and output from an ICA may not be in a standardimage format, but rather may be in a format requiring further decoding(for instance, to decode coding performed by the ICA) and/or processing(for instance, to format the image data into a standard image format,such as JPEG or PNG). This post-processing can occur within the camera(for instance, subsequent to the capture of the image data) or outsideof the digital camera system (for instance, offline in a computer or amobile device). Further, the image capture system architecture describedherein can include additional components configured to receive andprocess the image data output from the ICA. In one example embodiment,the ICA can capture and process image data in an accelerated mode, canstore the processed image data, and can post-process the stored imagedata into a viewable image format at a later time.

Example Image Capture Acceleration System

Turning now to FIG. 1, it illustrates a system 100 for image captureacceleration including a sensor array 110, an ICA 120, and an ISP 130.As illustrated in FIG. 1, the ICA 120 is coupled to the sensor array 110and the ISP 130. A communication bus 142 couples the sensor array 110 tothe ICA 120, and a second communication bus 144 couples the ICA 120 tothe ISP 130. In this embodiment and others, the communication buses 142,144 are selected based on the bandwidth requirements of the imagecapture system 100. For example, the bus 142 may be implemented suchthat the bus 142 does not inhibit image data transfer or otherwise actas a bottleneck for the image capture system 100.

The sensor array 110 is configured to capture image data and output theimage data to a processor, such as the ICA 120 or the ISP 130. In oneembodiment, the sensor array 110 is a Bayer color filter array, and thesensor array 110 outputs raw Bayer pattern data. Other types of imagesensors may also be used in the accelerated image capture system 100.The sensor array 110 may be configured to capture image data at one ormore frame rates and one or more resolutions, for example as specifiedby a user, under the control of a camera processor (not shown) or theISP 130. Although not shown in FIG. 1, the sensor array 110 can beimplemented within an image sensor chip, for instance a charge-coupleddevice (“CCD”) or complementary metal-oxide semiconductor (“CMOS”),configured to convert captured light incident upon the image sensor chipinto electrical signals representing the captured light (“image data”herein).

The ISP 130 processes raw image data received from the sensor array 110and generates processed image data for output to a display screen,memory, or external computing device. In one embodiment, the ISP 130performs processing steps including clean Bayer processing, demosaicing,etc., as well as compression to format the raw image data for output. Invarious embodiments, the ISP 130 may be configured to process the imagedata to generate image or video files in standard formats, such as JPEG,PNG, TIFF, AVI, or MPEG.

The ICA 120 intercepts image data captured by the sensor array 110before it is output to the ISP 130. In one embodiment, the ICA 120 isconfigured to process the image data in response to a user request toaccelerate image processing. In another embodiment, the ICA 120 isconfigured to automatically provide the image data to the ISP 130 whenthe image sensor captures images in a standard capture mode (forinstance, at a low frame rate and/or resolution) and to process thereceived image data when the image sensor captures images in anaccelerated capture mode (for instance, at a higher frame rate and/orresolution). For example, the ICA 120 may send image data to the ISP 130when the image data is captured at 120 frames per second (fps) and 1080presolution, while the ICA 120 may process image data (by acceleratedprocessing) when the image data is captured at 240 fps and 4 Kresolution.

The standard and accelerated capture modes may be defined relative tothresholds. Specifically, the accelerated capture mode can beimplemented when capturing image data at an above-threshold frame rateor an above-threshold resolution. In such instances, the thresholds canbe low enough to guarantee that image data captured below the thresholdframe rate and/or resolution can be processed by the ISP 130. Forexample, the thresholds may be selected such that a low-end ISP canprocess the image data captured in the standard capture mode. Thisallows potential cost savings to be realized by allowing a lessexpensive ISP to be implemented in the image capture system. Moreover,potential power savings may be realized by using the ICA 120, ratherthan the ISP 130, for higher-power image processing circumstances.

It should be noted that in one embodiment, when the image sensorcaptures images in the first mode, the ICA 120 can process the receivedimage data (instead of the ISP 130). For example, in addition toprocessing image data captured at above-threshold frame rates andresolutions, the ICA 120 may process image data captured at low framerates and low resolutions (e.g., for previewing images), low frame ratesand high resolutions (e.g., for time lapse photography), and high framerate and low resolution (e.g., for low-bandwidth streaming). Image datamay alternatively be processed in parallel by the ICA 120 and ISP 130.Furthermore, when the ICA 120 processes image data, the ISP 130 canremain idle, or can simultaneously process downscaled and/or framerate-lowered image data (for instance, image data received from the ICA120), allowing the ISP 130 to keep up with the pace of captured imagedata while minimizing power consumption. For example, images at 4 Kresolution captured at 60 fps by the image sensor may be processed bythe ICA 120. At the same time, these images can be downscaled (e.g., toa WVGA resolution) at 30 fps (either by the ICA 120 or the ISP 130) andprocessed by the ISP 130. Such an embodiment allows the image dataprocessed by the ISP 130 to be used for previewing images processed atfull resolution and frame rate by the ICA 120, to be stored at thedownscaled resolutions and frame rates, to be streamed via WiFi or otherlow-bandwidth streaming, and the like.

The sensor array 110 may communicate a preferred processing mode (forinstance, processing with either the ICA 120 in accelerated capture modeor the ISP 130 in standard capture mode) via the communication bus 142.Alternatively, the ICA 120 may receive information from the cameracontroller requesting a capture mode, and can determine whether to sendthe image data to the ISP 130 for processing or to process the imagedata with the accelerator circuitry of the ICA 120 in response. In oneembodiment, a camera controller provides an instruction to operate instandard mode or accelerated mode, and the ICA 120 configures thedemultiplexer 121 in response.

In the embodiment illustrated in FIG. 1, the ICA 120 includes ademultiplexer (“demux”) 121, a clean Bayer processing module 122, apre-processing engine 123, a compression engine 124, and one or moreoutput interfaces 125. In other embodiments, the ICA 120 may includefewer, additional, or different components than those described herein,such as one or more CPU cores and memories (which may be configured tofunction as an ISP in all or certain circumstances), one or more highdynamic range pre-processors, encryption engines, metadata embeddingmodules, linearization lookup tables, and the like.

The demux 121 is configured to receive image data captured by the sensorarray 110 and output the image data to the ISP 130 for processing oroutput the image data to accelerator circuitry within the ICA 120 forprocessing. In one embodiment, the demux 121 is an analog demux toreduce power consumption of the ICA 120. In one embodiment the demux 121outputs the image data to the ISP 130 for processing during imagecapture at frame rates and/or resolutions that do not requireaccelerated image processing or large amounts of processing power. Thedemux 121 can output image data to the accelerator circuitry of the ICA120 during high frame rate or high resolution image capture modes, orduring any other time (for example, during other processing-intensivecapture modes, when selected by the user, and the like). In oneembodiment, the sensor array 110 controls the control lines of the demux121, for instance by communicating a control signal based on a desiredcapture mode. Alternatively, the sensor array 110 can communicatevarious information useful in making image data processing decisions tothe demux 121, such as the frame rate and resolution of image capture,and the demux 121 or ICA 120 can output image data to the ISP 130 orprocess it at the ICA 120 based on the received information. It shouldbe noted that in some embodiments, the demux 121 may be external to theICA 120.

The accelerator circuitry of the embodiment of the ICA 120 illustratedin FIG. 1 includes the clean Bayer processing module 122, thepre-processing engine 123, the compression engine 124, and the outputinterface 125. In one embodiment, the clean Bayer processing module 122is configured to perform Bayer processing on image data, such asrepairing defective pixels, correcting color and luminance, andrepairing other capture errors. The pre-processing engine 123 mayperform one or more image processing operations on the image dataincluding demosaicing operations, noise reduction operations, imagesharpening operations, resolution adjustment, color correction and/orcolor space conversion, brightness adjustment, pixel formattingoperations, quantization, iHDR parsing or other forms of parsing, andthe like. In some embodiments, the pre-processing engine 123 performsonly minimal processing operations, and does not perform processingoperations that require over a threshold amount of time and/or consumeover a threshold amount of power. The compression engine 124 isconfigured to compress the image data by lossy or lossless compressioninto a compressed data format of equal or smaller size than the originalimage data. For example, the compression engine 124 may compresses theprocessed image data using a wavelet compression algorithm, such as VC-5or CINEFORM™. An advantage of using a wavelet compression algorithm isthe generation of downscaled images, which in one embodiment may beoutput by the compression engine 124 to the ISP 130 or to a displayscreen of a camera (e.g., for a user to preview the images).

The one or more output interfaces 125 may output the processed imagedata to a non-transitory computer-readable storage medium (e.g., flashmemory or disk), or can output the processed image data to anothercomponent (such as a processor) for storage, subsequent processing,and/or formatting. In one embodiment, the output interface(s) 125include a physical layer interface coupled to a storage medium,processor, or other component.

In one embodiment, the output image data can be processed via a standardimage processing pipeline to format the image data into a standard imageor video format (such as the JPEG format, the PNG format, or the MPEGformat). This image processing pipeline can be located external to thecamera, such as in a computer or other mobile device. By locating thestandard image processing pipeline on a device external to the camera, ahigher level of image processing quality can be achieved by the externaldevice, provided the external device has greater processing and powerresources than the camera and/or is under less restrictive timeconstraints. Further, by having the external device perform the standardimage processing, processing and power load savings can be realized bythe camera.

As shown in FIG. 1, the ICA 120 is a dedicated IC external to the sensorarray 110 and the ISP 130. However, in other embodiments, the ICA 120and one or more of the sensor array 110 and the ISP 130 may beimplemented as a single component. For example, FIG. 2 illustrates animage sensor chip 200 including the sensor array 110 and the ICA 120,which outputs image data to the ISP 130 or another external device, suchas a memory internal or external to the camera, or an externalprocessor. Similarly, the ISP 130 may output processed image data to aninternal or external memory, another processor, or the like. FIG. 3illustrates an image processing chip 300 including the ICA 120 and ISP130. The image processing chip 300 receives raw image data from thesensor array 110 and outputs processed image data to, for example, amemory internal or external to the camera. It should be noted that thecomponents of the ICA 120 described with respect to FIG. 1 can beimplemented within the other embodiments described herein; for example,the embodiments of FIGS. 2 and 3 may include one or more of the demux121, clean Bayer processing module 122, pre-processing engine 123,compression engine 125, and output interface 125 in the processing path.

Referring now to FIG. 4, illustrated is an embodiment of an ISP 410configured to process image data in an accelerated manner via firmware,without the need for a dedicated ICA. The ISP 410 receives capturedimage data from the image sensor chip 405, processes the received data,and outputs processed image data to the memory 420. In the embodiment ofFIG. 4, the ISP 410 can process image data normally in a standard mode(for instance, when the received image data is captured at a frame rateand resolution that do not require accelerated image processing), andcan process image data in an accelerated mode (for instance, whenaccelerated image data processing is required or requested).Alternatively, the ISP 410 can process image data in the acceleratedmode regardless of the mode in which the image data was captured.

In one embodiment, the ISP 410 processes image data by implementing oneor more of the following steps: 1) performing clean Bayer processing412, 2) bypassing demosaic processing 413, 3) performing bit depthconversion 414, 4) performing color space conversion 415, and 5)performing image data encoding 416. Each of the operations 412 through416 can be implemented by dedicated standalone modules, by generalprocessing modules, by hardware, or any other suitable module. The cleanBayer processing operation 412 may include similar functions as thoseperformed by the clean Bayer processing module 122 described withrespect to FIG. 1, and in one embodiment may be performed by the cleanBayer processing module 122.

In the standard processing mode, the ISP 410 may perform demosaicingoperations on the image data to convert the image data to a standardformat. However, in an accelerated processing mode, after clean Bayerprocessing 412 is performed on the image data received from the imagesensor chip 405, standard demosaic processing is bypassed 413 in orderto keep the image data in the Bayer color space or native sensor colorspace. Bypassing 413 the standard demosaic processing may improve theimage processing performance of the ISP 410, as the demosaicing step mayincrease the amount of data processed during subsequent steps.Additional pre-processing operations can also be bypassed, for instancenoise reduction and image sharpening operations.

After bypassing 413 various pre-processing operations, the ISP 410(operating in an accelerated mode) can use look-up tables (LUTs) toperform bit-depth conversion 414. Any suitable LUT can be used toconvert 414 the bit-depth of the image data, such as a linear ornon-linear domain LUT, a log LUT, a tone/gamma LUT, and the like.

The ISP 410 can then perform color space conversion 415 to convert theimage data into the format of the YUV color space. In one embodiment,the image data is converted into the YUV space using a 4:2:2 ratio,which indicates that image data brightness information is stored attwice the resolution of U-component and V-component image data colorinformation, though other YUV ratios can be used as well (such as a4:1:1 ratio, a 4:4:4 ratio, and the like).

In one embodiment, to perform color space conversion 415, the ISP 410swizzles the image data (by re-arranging vector entries for the imagedata) into the YUV color space. Specifically, the ISP 410 may reorderpixel bits of the image data from the Bayer color space into the YUVcolor space. Swizzling, or reordering, image data into the YUV space caninvolve mapping the Y component of the YUV domain to the G Bayercomponent of the image data, mapping the U component of the YUV domainto the B Bayer component of the image data, and mapping the V componentof the YUV domain to the R Bayer component of the image data. Forexample, FIG. 5 illustrates an example conversion of a Bayer color array502 to a YUV 4:2:2 format 504. The Bayer color array 502 includes a redsubpixel R, a blue subpixel B, and two green subpixels G_(R) and G_(B).The ISP 410 reorders the pixel bits to form the vector [R G_(R) B G_(B)]in the YUV 4:2:2 format 504. Alternatively, the ISP 410 may apply acolor space transformation to map the Bayer color array to the YUVdomain. It should be noted that other forms of swizzling may beperformed than those described herein, and the image data may beconverted to a color space other than the Bayer color space or the YUVcolor space.

The ISP 410 encodes 416 the YUV image data using, for example, H.264 orH.265 encoding or any other suitable coding algorithm. The encoded YUVimage data may then be output by the ISP 410 for storage by the memory420. In one embodiment, the memory 420 is a local storage (e.g., anin-camera memory). In another embodiment, the memory 420 is an externalmemory (e.g., a memory in a computer external to the camera). In thelatter embodiment, a compression engine can encode the image data fortransmission to the external memory, for example by encoding the YUVimage data in the HDMI format and outputting the encoded data in theHDMI output.

The stored encoded YUV image data may be post-processed to undo theYUV-swizzling. After decoding and decompressing the stored encoded YUVimage data, the image data can be processed via a standard imageprocessing pipeline to format the image data into a standard image orvideo format for storage or display. Similar to the embodiment describedwith respect to FIG. 1, the image processing pipeline for undoing theYUV-swizzling can be located external to the camera, such as in acomputer or other mobile device, to achieve a higher level of imageprocessing quality and to reduce processing and power loads of thecamera. It should be noted that using the methods of the embodiment ofFIG. 4, the effective image processing rate can be twice or more thanthe standard ISP processing rate, and the amount of power used in imageprocessing may be decreased.

Image Capture Acceleration Via Wavelength Compression

FIG. 6 illustrates one embodiment of a system for image captureacceleration. In the embodiment of FIG. 6, the compression engine 124 ofthe ICA 120 includes a decimator 600 and an entropy coder 602. The ICA120 further includes a component transformation block 603, an encoder604, a memory 606, and a decoder 608. As noted above, in alternativeembodiments, the ICA 120 can include additional, fewer, or differentcomponents.

The component transformation block 603 receives image data from thesensor array 110 and transforms the data into a format suitable forcompression. One embodiment of the component transformation block 603 isillustrated in FIG. 7. As shown in FIG. 7, the component transformationblock 603 includes four line storage buffers 702, 704, 706, and 708, andoutput multiplexers 710, 715, and 720. The component transformationblock 603 is configured to receive raw Bayer image data 700 and outputthe four color components of each pixel (e.g., R, G_(R), G_(B), and B)simultaneously to the compression engine 124.

The raw image data 700 is arranged in an array of pixels, each of whichhave four sub-pixels split over two data lines. To provide simultaneousaccess to the four sub-pixels of each pixel (corresponding respectivelyto the four color components of the pixel), the component transformationblock 603 buffers the two data lines containing the four sub-pixels. Inone embodiment, the component transformation block 603 parses the rawimage data 700 into lines of image data. In another embodiment, thecomponent transformation block 603 receives lines of raw image data 700sequentially. As illustrated in FIG. 7, two line storage buffers (e.g.,buffers 702 and 704) each receive one or more sub-pixels of a line ofthe raw image data 700. A second pair of line storage buffers (e.g.,buffers 706 and 708) receive two or more pixels of a consecutive line ofthe raw image data 700. Multiplexers 710 and 715 each combine twoadjacent sub-pixels from each line of input data 700, and multiplexer720 combines the outputs of multiplexers 710 and 715. The output ofmultiplexer 720 is the four color components of each pixel of raw imagedata 700.

Returning to FIG. 6, the decimator 600 and the entropy coder 602collectively perform one or more implementations of wavelet compression,for instance VC-5. The decimator 600 receives image data from the sensorarray 110 via the demultiplexer 121 or the component transformationblock 603, and decimates the image data to form image sub-bandcomponents. In some embodiments, the decimator 600 includes a horizontalhigh-pass filter, a horizontal low-pass filter, a vertical high-passfilter, and a vertical low-pass filter. The image data can first beprocessed using the horizontal high-pass and low-pass filters, producinghorizontally-filtered sub-band image data components. Thehorizontally-filtered sub-band components can subsequently be processedusing the vertical high-pass and low-pass filters, producing sub-banddecimated image data components. In other embodiments, the decimatorproduces sub-band decimated image data components by filtering the imagedata in a different order, or by using different filters than thosedescribed herein.

The decimator 600 can iteratively decimate image data, producingsub-band decimated image components of increasing granularity. In someembodiments, only certain sub-band decimated image components areiteratively decimated, for instance a sub-band decimated image componentthat has been processed with both a horizontal low-pass filter and avertical low-pass filter (a “low/low sub-band component” hereinafter).In such embodiments, the sub-band decimated image data componentsproduced by the decimator 600 are of varying granularity.

The entropy coder 602 performs entropy encoding on the decimated imagedata produced by the decimator 600 to create encoded image data. In someembodiments, the decimated image data includes wavelet coefficients,coefficients representative of image pixels or of other imageproperties, or the like. The entropy encoder 602 can quantize thesecoefficients, can query one or more tone map look-up tables using thecoefficients, and can perform entropy encoding on the quantizedcoefficients to create entropy encoded image data.

One embodiment and implementation of wavelet compression is described ingreater detail in U.S. patent application Ser. No. 13/113,950, entitled“Encoding and Decoding Selectively Retrievable Representations of VideoContent”, filed May 23, 2011, the contents of which are herebyincorporated in their entirety.

FIG. 8 illustrates an embodiment of image compression via waveletcompression. In the embodiment of FIG. 8, image data 800 is accessed bythe decimator 600. The decimator 600 decimates the image data 800 toproduced decimated image data 809 using a horizontal high-pass filter, ahorizontal low-pass filter, a vertical high-pass filter, and a verticallow-pass filter to create sub-band components. In one embodiment, thedecimator 600 first processes the image data 800 using the horizontalfilters, producing a horizontal high-pass sub-band component and ahorizontal low-pass sub-band component. Continuing with this embodiment,the decimator 600 then processes the horizontal high-pass sub-bandcomponent using a vertical high-pass filter, producing a high/highsub-band component 802. The decimator 600 also processes the horizontalhigh-pass sub-band component with a vertical low-pass filter, producinga high/low sub-band component 804. The decimator 600 next processes thehorizontal low-pass sub-band component using a vertical high-passfilter, producing a low/high sub-band component 806. Finally, thedecimator 600 processes the horizontal low-pass sub-band component usinga vertical low-pass filter, producing a low/low sub-band component 808.

It should be noted that in the embodiment of FIG. 8, the heights of thehorizontal sub-band components output by the horizontal high-pass filterand the horizontal low-pass filter are equal to the heights of the imagedata 800, and the widths of the horizontal sub-band components are equalto one-half of the width of the image data 800. In addition, in theembodiment of FIG. 8, the widths and heights of the sub-band components802, 804, 806, and 808 are equal to one-half the width and height,respectively, of the image data 800. In various embodiments, the low/lowsub-band component 808 includes the image represented by the image data800 at one-quarter the resolution of the image data 800. For instance,if the image data 800 is a 4 k image (3840 pixels by 2160 pixels), thelow/low sub-band component 808 can be a 1080p image (1920 pixels by 1080pixels).

In the embodiment of FIG. 8, the decimator 600 can further decimate theimage data in a second decimation iteration to create decimated imagedata 817 by decimating the low/low sub-band component 808. In such anembodiment, the decimator 600 processes the low/low sub-band component808 using the horizontal high-pass filter, the horizontal low-passfilter, the vertical high-pass filter, and the vertical low-pass filterdescribed as described above. Decimating the low/low sub-band decimatedimage data component 808 produces a second high/high sub-band component(H/H 810), a second high-low sub-band component (H/L 812), a secondlow-high sub-band component (L/H 814), and a second low-low sub-bandcomponent (L/L 816). Upon the second decimation iteration, the low/lowsub-band component 808 is replaced within the decimated image data 809with H/H 810, H/L 812, L/H 814, and L/L 816 to form the decimated imagedata 817. Both the decimated image data 809 and the decimated image data817 include the high/high sub-band component 802, the high/low sub-bandcomponent 804, and the low/high sub-band component 806.

A third decimation iteration can be performed on the L/L sub-bandcomponent 816. Additional decimation iterations can also be performed onsubsequent L/L sub-band components. The L/L sub-band component 816includes the image represented by the image data 800 at one-sixteenththe resolution of the image data 800. For instance, if the image data800 is a 4 k image, the L/L sub-band component 816 can be an image of960 pixels by 540 pixels.

A set of decimated image data is accessed by the entropy coder 602, andis encoded to form the encoded video 820. In one embodiment, thedecimated image data 809 is encoded by the entropy coder 602.Alternatively, the decimated image data 817 can be encoded by theentropy coder 602. In some embodiments, the set of decimated image dataencoded by the entropy coder 602 is dependent on the performance ormemory requirements of the image capture system, a user-selected ordefault image capture mode, or based on any other suitable criteria. Itshould be noted that in some embodiments, upon encoding a set ofdecimated image data with the entropy coder 602, the decimator 600 doesnot perform further decimation iterations.

Returning to the embodiment of FIG. 6, the compression engine 124 can beconfigured to output a decimated image data component to the ISP 130.For instance, the compression engine 124 can output a low/low sub-banddecimated image data component, such as component 808 or component 816.As noted above, the low/low sub-band decimated image data components arelower-resolution versions of images represented by image data receivedfrom the sensor array 110. Accordingly, by outputting lower resolutionimage by-products of the wavelet compression performed by thecompression engine 124, the ISP 130 has access to lower-resolution imagedata without requiring additional processing to be performed by thecompression engine 124. It should be noted that the compression 124 canoutput sub-band components to the ISP 130 either before or afterperforming entropy encoding on the sub-band components.

In the embodiment of FIG. 6, the ISP 130 includes at least two inputs,input 1 and input 2. The ISP 130 is configured to receivefull-resolution image data from the sensor array 110 via thedemultiplexer 121 at input 1 (for instance, when the ICA 120 is in astandard mode). The ISP 130 is configured to receive image data at alower-resolution than the full-resolution image data (“lower-resolutionimage data” hereinafter) from the compression engine 124 at input 2,such as one or more image sub-band components. In some embodiments, theISP 130 receives a low/low sub-band component from the compressionengine 124 and/or additional sub-band components. In some embodiments,the ISP 130 processes image data received at input 1 and input 2 withthe same processing components. Alternatively, the ISP 130 can processfull resolution image data received at input 1 and lower-resolutionimage data received at input 2 with separate, dedicated processingcomponents.

The ISP 130 can perform various processing operations onlower-resolution image data received at input 2. In one embodiment, theISP 130 can encode the lower-resolution image data for display as apreview image, for instance on a camera display or smart device. Byencoding lower-resolution image data for display as a preview image, auser can perform a number of operations based on viewing the previewimage without requiring the ISP 130 to consume the power and resourcesrequired to encode the full resolution image. For instance, in responseto viewing a preview image, a user can adjust camera settings forsubsequent image capture, can identify one or more image encodingoptions for use in encoding the full resolution image, or can delete theimage prior to encoding the full resolution image.

The ISP 130 can transmit received lower-resolution image data. Variousforms of data transmission, for instance wireless transmission, may beassociated with or subject to limited transmission bandwidths. Imagedata resolution is generally proportional to image data quantity/size.Accordingly, by transmitting lower-resolution image data, the ISP 130can better satisfy transmission bandwidth limitations. In someembodiments, for image data captured in an accelerated mode, alower-resolution version of the image data is provided to the ISP 130and wirelessly broadcasted (for instance, to a computing device), whilea high-resolution version of the image data is stored until the camerais physically coupled to the computing device.

The ISP 130 can be configured to receive multiple sub-band components,and can prioritize transmission bandwidth based on the importance of areceived sub-band component. For instance, the ISP 130 can be configuredto prioritize low/low sub-band components such that low/low sub-bandcomponents are transmitted first, and other sub-band components aretransmitted only if additional transmission bandwidth is available. Insuch embodiments, the ISP 130 can optimize the quality of transmittedimage data by prioritizing sub-band components most representative ofthe full-resolution image data in limited bandwidth environments. Insome embodiments, the ISP 130 receives multiple low/low sub-bandcomponents of varying decimation granularity, and selects a low/lowsub-band component from the set of low/low sub-band components based onthe granularity of the low/low sub-band components and a detectedavailable bandwidth.

In some embodiments, the ISP 130 receives lower-resolution image data atinput 2, analyzes the lower-resolution image data, and adjusts variousimage capture settings based on the analysis. For instance, the ISP 130may analyze the lower-resolution image data, and may adjust anauto-exposure setting of the camera, changing exposure times andsettings for the sensor array 110. The ISP 130 can adjust the whitebalance levels in full resolution image data processed by the ICA 120,or can adjust auto-white balance levels during image capture based on awhite level analysis of the lower-resolution image data. The ISP 130 canadjust the auto-focus settings of a camera lens based on determinedfocus levels in the lower-resolution image data. The ISP 130 can adjustany suitable camera settings based on an analysis of lower-resolutionimage data received from the ICA 120.

It should be noted that in some embodiments, the compression engine 124outputs other decimated image data components (such as a high/highsub-band decimated image data component) to the ISP 130, and can adjustone or more image capture settings (such as auto-focus) based on ananalysis of these other decimated image data components. In someembodiments, the ISP 130 receives high/high and low/low sub-banddecimated image data components associated with successive image frames,and optimizes autofocus by maximizing the ratio between variousproperties of the high/high sub-band component and the low/low sub-bandcomponent. Similarly, the ISP 130 can estimate the sharpness of capturedimage data based on the high/high and low/low sub-band components, andcan adjust camera settings based on the estimated sharpness.

In embodiments in which the ISP 130 is associated with multiple camerasconfigured to capture the same or similar fields of view, the ISP 130can use low/low sub-band decimated image data components to align thefields of view of the multiple cameras. In such embodiments, the ISP 130can receive a low/low sub-band decimated image data component from eachcamera, can attempt to align the sub-band components (for instance,using an alignment algorithm), and can adjust the fields of view of thecameras based on the attempted alignment of the sub-band components.

The ISP 130 can be configured to process and output or store fullresolution image data, for instance 4 k resolution image data, whenreceiving raw image data from the sensor array 110 via the demultiplexerat input 1 (for instance, when images are captured in a standard mode).Similarly, the ISP 130 can be configured to process and output or storelower resolution image data, for instance 1080p resolution image data,when receiving decimated image data from the compression engine 124 atinput 2 (for instance, when images are captured in an accelerated mode).

The embodiment of FIG. 6 includes an encoder 604 configured to encodeimage data, such as image data received from the sensor array 110, ordecimated image data received from the compression engine 124. Theencoder 604 is an encoder configured to encode image data using one ormore encoding algorithms or methods. As described herein, the encoder604 encodes image data using the H.264 encoding algorithm, though itshould be known that in other embodiments, the encoder 604 can implementany other suitable image or video encoding algorithms.

The memory 606 is configured to store image data, either on a permanentor temporary basis. For instance, the compression engine 124 can storeimage data in the memory 606 between decimation iterations, or afterdecimation and/or encoding by the entropy coder 602. In someembodiments, encoded image data is stored at the memory 606 prior tobeing outputted to an external storage module via the output interface125. In some embodiments, image data stored external to the ICA 120 isretrieved via the output interface 125 and stored in the memory 606 forsubsequent encoding and/or decoding by the ICA 120.

The memory 606 can be used for both encoding operations (for instance,by the compression engine 124 or the encoder 604) and decodingoperations (for instance, by the decoder 608, as described below).Typical systems require separate memories for encoding and decodingoperations. However, by utilizing multiplexers and demultiplexers, asingle memory 606 can be used for both encoding and decoding (though notsimultaneously). For instance, in an encoding mode, multiplexers cancouple memory read/write and control lines to the compression engine 124or the encoder 604, and in a decoding mode, the multiplexers can couplememory read/write and control lines to the decoder 608. By utilizing asingle memory for both encoding and decoding, memory costs can bereduced, the ICA footprint can be reduced, power consumption andinput/output lines can be reduced, and the like. In such embodiments,the compression engine 124, the encoder 604, and/or the decoder 608 canstore image data in the memory 606 before, during, or after encoding anddecoding operations.

The decoder 608 is configured to decode encoded image data. In someembodiments, the ICA 120 encodes raw image data and stores the imagedata at a storage module external to the ICA 120. In such embodiments,the ICA 120 can subsequently retrieve the encoded data, can decode theencoded data using the decoder 608 to create the original raw imagedata, and can output the raw image data to the ISP 130. For example, theICA 120 may process and encode data in an accelerated capture mode whenthe camera is in use, and may decode the encoded data and output theoriginal raw data to the ISP 130 when the camera is no longer in use.Such embodiments may beneficially allow a camera to capture image dataat normally prohibitive frame rates and resolutions by storing capturedimage data without fully processing the captured image data into aviewable format, and allow the camera to subsequently fully process thecaptured image data into a viewable format when the camera is no longerin use and subject to image capture rate bottlenecks.

In some embodiments, the H.264 encoding performed by the encoder 604 ismore time-efficient than the wavelet compression performed by thecompression engine 124, but results in a greater quantity of compressedimage data than the wavelet compression. Likewise, in some embodiments,the wavelet compression performed by the compression engine 124 resultsin a smaller quantity of compressed image data than the H.264 encoding,but is less efficient. Accordingly, some use cases may require theefficiency of H.264 and the encoded data quantity size of waveletcompression.

FIG. 9 illustrates an embodiment of image compression by combiningmultiple image compression techniques. The compression engine 124 ofFIG. 9 includes a decimator 600 that decimates image data into ahigh/high sub-band component 900, a high/low sub-band component 902, alow/high sub-band component 904, and a low/low sub-band component 906.The decimator 600 outputs the high/high sub-band component 900, thehigh/low sub-band component 902, and the low-high sub-band component 904to the entropy coder 602. The entropy coder 602 performs entropyencoding on these sub-band components, and outputs the entropy encodedcomponents to a concatenation module 912. It should be noted thatalthough not illustrated in FIG. 6, the ICA 120 can include aconcatenation module 912, or the functionality of the concatenationmodule 912 can be implemented within any other component of the ICA 120.

In the embodiment of FIG. 9, the decimator 600 also outputs the low/lowsub-band component 906 to a H.264 encoder 910. In some embodiments, theH.264 encoder 910 is implemented within the encoder 604 of FIG. 6. TheH.264 encoder 910 encodes the low/low sub-band component 906, andoutputs the H.264-encoded component to the concatenation module 912. Theconcatenation module 912 combines the entropy encoded components and theH.264-encoded component to create combined encoded image data, andoutputs the combined encoded image data for storage, for instance in thememory 606. Of the four sub-band components, the low/low sub-bandcomponent 906 can include the greatest quantity of image data, makingthe low/low sub-band component ideally suited for the efficiency ofH.264 encoding. Likewise, the high/high sub-band component 900, thehigh/low sub-band component 902, and the low/high sub-band component 904can include comparatively less image data, making these componentsideally suited for the resulting encoded image data quantity benefits ofwavelet compression.

In some embodiments, image data received at the ICA 120 is processedfirst by the encoder 604, and then is subsequently processed in all orin part by the compression engine 124. FIG. 10 illustrates analternative embodiment of image compression by combining multiple imagecompression techniques. In the embodiment of FIG. 10, raw image data1000 is accessed by an H.264 encoder 1002. The H.264 encoder 1002encodes the raw image data into encoded image data including I-frames,B-frames, and P-frames, as is known in the art. The encoded image datais received at a frame parser 1004. The frame parses 1004 outputs theI-frames 1006 to a VC-5 encoder 1010, and outputs the B-frames andP-frames 1008 to a concatenation module 1012. In some embodiments, theVC-5 encoder 1010 is implemented within the compression engine 124. Inother embodiments, instead of VC-5 encoding, other forms of encoding notfurther discussed herein are implemented.

The VC-5 encoder 1010 encodes the I-frames, and outputs encoded I-framesto the concatenation module 1012. As noted above, wavelet encoding,while often less efficient than H.264 encoding, produces smallerquantities of encoded image data. Accordingly, by encoding I-frames withthe VC-5 encoder 1010, the encoded image data may be considerablysmaller in quantity than the H.264 encoded data. The concatenationmodule 1012 combines the encoded I-frames and the B- and P-frames 1008to form compressed image data 1014. The compressed image data 1014 cansubsequently be stored in the memory 606.

The encoded image data described herein may not be encoded into aviewable/displayable format. For instance, image data that has beenpartially encoded using H.264 encoding and partially encoded usingwavelet compression must be decoded and encoded into a viewable formatprior to display. In such embodiments, the decoder 608 can be configuredto decode the encoded image data based on the types of encoding used toencode the image data. For example, if a first portion of raw image datais encoded using wavelet compression, a second portion is encoded usingH.264 encoding, and the two portions are concatenated, the decoder 608can be configured to separate the portions of encoded data, to decodethe first portion using wavelet decompression, to decode the secondportion using H.264 decoding, and to combine the decoded first andsecond portions to form the original raw image data.

FIG. 11 illustrates an embodiment of the entropy coder 602 configured tooutput compressed, packed image data. In the embodiment illustrated inFIG. 11, the entropy coder includes a bit packer 1110 for receivingencoded image data 1105 and generating an image data file 1115 forstorage by the memory 606 or an external memory. In various embodimentsof the image capture accelerator 120, the encoded image data 1105 inputto the bit packer 1110 may include data encoded by wavelet compression,H.264, or various other compression techniques.

A block diagram illustrating an embodiment of the bit packer 1110 isshown in FIG. 12. In one embodiment, the bit packer 1110 is configuredto process sub-bands of encoded image data in parallel. The bit packer1110 includes bit packing logic block 1210, current channel bit packingstate register 1220, and a plurality of bit packing state registers1230. In one embodiment, the bit packer 1110 includes one bit packingstate register 1230 for each color channel input to the bit packer 1110.Each bit packing state register 1220, 1230 includes a count (indicatingthe number of bits stored by the state register) and a shift register.

The bit packing logic block 1210 receives the input data, number ofbits, an input enable flag, a channel identifier, a channel start flag,a channel end flag, and a codeblock end flag. When Input Enable isasserted, the bit packing logic block 1210 determines a number of bitsof input data to concatenate based on the Number of Incoming Bitssignal, and concatenates the corresponding number of bits of the inputdata with shift-register bits of the current channel bit packing stateregister 1220. The bit packing logic block 1210 increments the count ofbits stored by the current channel bit packing state register 1220 bythe Number of Incoming Bits. When the number of bits of data stored bythe current channel bit packing state register 1220 reaches the width ofoutput data bus 1240, the bit packing logic block 1210 asserts OutputEnable, which indicates that a newly-packed word is available for output(e.g., to the memory 606). After outputting the newly-packed word viathe output data bus 1240, the bit packing logic block 1210 decreases thecount of the current channel bit packing state register 1220 and shiftsthe shift register bits of the current channel bit packing stateregister 1220 to a zero-offset state.

The Channel Start flag indicates a start of active data at an inputchannel. When the Channel Start flag is asserted, the bit packing logicblock 1210 samples and stores the Channel identifier signal and readsthe contents of the bit packing state register 1230 associated with thechannel identified by the Channel identifier signal into the currentchannel bit packing state register 1220. The bit packing logic block1210 determines a number of bits to concatenate based on the Number ofStored Bits signal (indicating the number of bits stored in the bitpacking state register 1230) and the Number of Incoming Bits signal, andconcatenates the incoming bits with the bits in the current channel bitpacking state register 1220. If the number of bits stored by the currentchannel bit packing state register 1220 reaches the width of the outputdata bus 1240, the bit packing logic block 1210 asserts Output Enable.When Channel End is asserted, if the number of bits stored by thecurrent channel bit packing state register 1220 is less than the widthof the output data bus 1240, the contents of the current channel bitpacking state register 1220 are copied to the bit packing state register1230 corresponding to the channel identified by the stored Channelidentifier. Accordingly, the bit packing state registers 1230 store bitsfrom respective input channels until they are concatenated with incomingbits and output via the output data bus 1240. Finally, when theCodeblock End flag is asserted, the bit packing logic block 1210 clearsany remaining bits from the current channel bit packing register 1220and clears the contents of the bit packing register 1230 correspondingto the stored Channel identifier.

In one embodiment, rather than receiving both a Channel Start flag and aChannel End flag, the bit packing logic block 1210 receives a singleChannel Active signal. At the rising edge of the Channel Active signal,the bit packing logic block 1210 samples and stores the Channelidentifier signal. At the falling edge of the Channel Active signal, thebit packing logic block 1210 copies the contents of the current channelbit packing state register 1220 to the bit packing state register 1230corresponding to the stored Channel identifier. In one embodiment, thebit packing logic block 1210 generates the Codeblock end flag at thefalling edge of the Channel Active signal.

In one embodiment, compressed wavelet sub-bands are written to a framebuffer, where they are stored for further processing or transmission.FIGS. 13A-B illustrate a direct memory access (DMA) engine 1300 forstoring wavelet sub-bands in a frame buffer. In one embodiment, asillustrated in FIG. 13A, the DMA engine 1300 includes a waveletcompression engine 1310, an embedded memory 1320, and a waveletdecompression engine 1330. The wavelet compression engine 1310 receiveswavelet sub-bands from the video source 1305 (e.g., the demultiplexer121) and compresses the sub-bands. For example, the wavelet compressionengine 1310 may include the compression engine 124 as described hereinwith respect to various embodiments. As each compressed sub-band isgenerated, the wavelet compression engine 1310 inserts a header beforeeach packet of data indicating the sub-band number and channel number ofthe sub-band, as well as length of the compressed data packet.

In the embodiment of the DMA engine 1300 illustrated in FIG. 13A, thewavelet compression engine 1310 writes the compressed sub-bands to theembedded memory 1320, which stores a frame buffer 1325. In theembodiment illustrated in FIG. 13B, the wavelet compression engine 1310sends the compressed sub-bands to a memory controller 1350 for writingto an external memory 1360, which stores a frame buffer 1365. Thecompressed sub-bands of each video frame are written to the frame buffer1325 or 1365 without gaps, and the memory 1320 or 1360 maintains a tableidentifying the start address of each frame of video data.

In one embodiment, to improve efficiency of subsequent decoding of thecompressed sub-bands, the wavelet compression engine 1310 writescompressed sub-bands to the memory 1320 or 1360 in order from lowest tohighest order sub-bands for each row of video data. For example, if thewavelet compression engine 1310 compresses the input video data by VC-5compression and generates low-low, low-high, high-low, and high-highsub-bands, the wavelet compression engine 1310 may write the low-lowsub-band to the frame buffer 1325 or 1365, followed by the low-highsub-band, the high-low sub-band, and the high-high sub-band.

The wavelet decompression engine 1330 decompresses the sub-bands storedin the frame buffer 1325 or 1365 and passes the decompressed sub-bandsto the video sink 1340. For example, the wavelet decompression engine1330 may include the decoder 608 as described with respect to variousembodiments, and output decompressed image data to the ISP 130 forprocessing. In one embodiment, the wavelet decompression engine 1330decompresses sub-bands at a slower rate than the rate at which the imagedata was captured. For example, if the image sensor 110 captures videodata at 120 frames per second the video frames are written to the framebuffer 1325 or 1365 at a rate of 120 frames per second. If the ISP 130is configured to process video frames at a maximum of 30 frames persecond, the wavelet decompression engine 1330 decompresses one out ofevery fourth frame and sends the decompressed frames to the ISP 130.

One embodiment of the image capture accelerator 120 performs motiondetection and estimation on image data. FIG. 14 illustrates anembodiment of a system for motion detection and estimation usingdecimated image data. In the embodiment of FIG. 14, the system includesa motion detection circuit 1410 and a motion estimation circuit 1420. Invarious embodiments, the motion detection 1410 and motion estimation1420 circuits are components of the ICA 120, the ISP 130, or othercomponents of the camera system.

The decimator 600 of the ICA 120 outputs decimated image data to themotion detection 1410 and motion estimation 1420 circuits. For example,as shown in FIG. 14, the decimator 600 outputs a low-low sub-bandcomponent, a low-high sub-band component, and a high-low sub-bandcomponent to the motion detection circuit 1410. A high-high sub-bandcomponent is output to the motion estimation circuit 1420. However, thedecimator 600 may output additional sub-bands to the motion detection1410 and motion estimation 1420 circuits. For example, the decimator 600may further decimate the low-low sub-band component and output theresulting decimated components to the motion detection circuit 1410and/or the motion estimation circuit 1420.

As described above, the low-low sub-band component generated by thedecimator 600 represents the decimated image at one-quarter theresolution of the image data input to the decimator 600. Thus, for aframe of image data input to the decimator 600, a first low-low sub-bandcomponent is a representation of the frame at one-quarter the resolutionof the frame. A second low-low sub-band component, generated by furtherdecimating the first low-low sub-band component, is a representation ofthe frame at one-sixteenth the resolution of the frame. In contrast, thehigh-high sub-band components are generated by performing bothhorizontal and vertical high-pass filtering on the image data.Accordingly, a high-high sub-band component contains edge data of adecimated image.

The motion detection circuit 1410 uses the low-low sub-band componentsof frames of a video to generate a motion map 1415. A motion map 1415identifies regions of motion between two video frames. For example, themotion map 1415 is a set of binary values for blocks or pixels of aframe identifying whether the block or pixel moves between the currentframe and a subsequent or previous frame. To generate the motion map1415 between two frames of a video, the motion detection circuit 1410examines image components of the frames at two or more resolutions. Inone embodiment, the motion detection circuit 1410 receives at least twolow-low sub-band components for each frame from the decimator 600. Forexample, the motion detection circuit 1410 receives for each frame afirst low-low sub-band component, representing the frame at one-quarterresolution, and a second low-low sub-band component, representing theframe at one-sixteenth resolution. The motion detection circuit 1410uses the lowest resolution components to identify regions of motion inthe frames. For example, the motion detection circuit 1410 identifiespixels or blocks of the lowest resolution image data exhibiting motionbetween the video frames.

If motion is identified in a region of a frame, the motion detectioncircuit 1410 uses a higher-resolution component to more preciselyidentify the regions of motion in the frames. For each region of thelowest resolution image data determined to have motion, the motiondetection circuit 1410 identifies pixels or blocks of thehigher-resolution frames exhibiting motion. To further refine the motiondetection, the motion detection circuit 1410 may examine components ofthe frames at an even higher resolution. In each iteration, the motiondetection circuit 1410 detects motion in blocks or pixels from theregions of the lower-resolution frames determined to have motion. Thus,the motion detection circuit 1410 does not search the entirety of thehigher-resolution frame for motion. The motion detection circuit 1410may select the number of levels of resolution to examine to achieve adesired precision of motion detection for various applications.

As an example, the motion detection circuit 1410 receives the image data1500 shown in FIG. 15, which has been decimated twice. The motiondetection circuit 1410 uses the low-low sub-band component 1516 toidentify regions of motion. For each of the identified regions of motionin the sub-band component 1516, the motion detection circuit 1410analyzes the low/low sub-band component 1508 (that is, a higherresolution representation of the decimated image) to more preciselyidentify the regions of motion in the image. The motion detectioncircuit 1410 may then use the full-resolution image data 1500 to furtherrefine the motion detection. The motion detection circuit 1410 outputs amotion map for the image data 1500, identifying the blocks or pixels ofthe image data determined to exhibit motion.

For pairs of frames of a video, the motion estimation circuit 1420receives the motion map 1415 from the motion detection circuit 1410 andthe high-high sub-band components of one or both frames in the pair.Using the motion map 1415 and the high-high sub-band components, themotion estimation circuit 1420 generates motion vectors 1425 forinter-frame or intra-frame prediction. By using the high-high sub-bandcomponents to generate the motion vectors 1425, the motion estimationcircuit 1420 determines the motion vector 1425 based on edge data in theframe rather than the entire frame. Thus, the motion estimation circuit1420 generates the motion vectors 1425 with less processing time andpower than is needed to generate motion vectors based on entire framesof full-resolution image data. Moreover, the motion estimation circuit1420 predicts the motion vectors 1425 with greater accuracy than wouldbe provided by analyzing the entire frame. Accordingly, less error needsto be encoded for accurate video reconstruction.

The image capture accelerator 120 may use the motion map 1415 and themotion vectors 1425 for a variety of different applications. Oneembodiment of the image capture accelerator 120 uses the motiondetection and estimation performed on decimated image data to generatedifference frames for encoding image or video data. For example, oneembodiment of the image capture accelerator 120 generates differenceframes for inter-frame prediction using the motion vectors 1425.

In another example application, one embodiment of the image captureaccelerator 120 uses the estimated motion to perform electronic imagestabilization. FIG. 16 illustrates an example of electronic imagestabilization performed by the image capture accelerator 120. As a userof the camera system captures a video, the sensor array 110 capturesframes of the image data. The read window 1602 shown in FIG. 16corresponds to a full window of image data captured by the sensor array110, while the image data of the keep window 1604 is stored as a frameof the video. If the user moves the camera by small amounts whilecapturing the video, the relative position of a subject 1606 in the readwindow 1602 changes. In general, the image capture accelerator 120performs electronic image stabilization by determining the position ofthe keep window 1604 relative to the read window 1602 to maintain thesame relative position of the subject 1606 in each frame of the video.

Rather than using an input from an external sensor (such as a gyroscope)or performing computation-intensive motion compensation on thefull-resolution image data to determine the location of the keep window1604, the image capture accelerator 120 can use the motion detected byanalyzing image data of lower resolutions than the input video. Inparticular, the image capture accelerator 120 adjusts the position ofthe keep window 1604 from frame to frame based on the motion vectors1425. The image capture accelerator 120 uses the motion map 1415 and/orthe motion vectors 1425 to identify direction and magnitude of globalmotion from one read window 1602 to the next. The image captureaccelerator 120 then moves the keep window 1604 in the oppositedirection of the global motion, effectively canceling the motion in theread window 1602.

In yet another example application of the motion detection andestimation performed on decimated image data, one embodiment of theimage capture accelerator 120 uses the detected motion to perform motioncompensated temporal filtering (MCTF). MCTF compensates for temporalnoise across frames of a video before compressing the video to improvecompression efficiency. To perform MCTF, the image capture accelerator120 uses the motion vectors 1425 to determine which changes acrossframes of the video are results of motion and which changes are resultsof temporal noise, and filters the changes that are the result oftemporal noise.

Other example applications of the motion detection and estimationinclude motion tracking and range finding. For example, the imagecapture accelerator 120 uses low-low sub-band components to track objectmovement, and calculates the object's movement using high-high sub-bandcomponents. In some embodiments, decimated components (such as a low-lowsub-band component) can be used to identify or recognize faces orobjects within frames (for instance, by performing facial detection orobject recognition algorithms on the decimated components), and cancalculate the movement of the faces or objects between frames usingother decimated components (such as a high-high sub-band component).

Various applications of the image capture accelerator 120 and/ordecimated image data rely on rapid retrieval of particular sub-bandsfrom storage. For example, as described above, one embodiment of theimage capture accelerator 120 uses selected sub-band components of imagedata to detect and estimate motion. As another example, one embodimentof the image capture accelerator 120 sends a subset of the frames of avideo (e.g., one out of every fourth frame) to the ISP 130 forprocessing. In yet another example, one embodiment of the image captureaccelerator 120 transmits selected sub-band components (e.g., low-lowsub-band components) to an external device for video preview. To enableretrieval of any desired sub-band component, one embodiment of thecompression engine 124 is configured to store a reference to thelocation of each sub-band component generated by the decimator 600 instorage. In one embodiment, the compression engine 124 generates aheader for each sub-band before storing the sub-band. For example, theheader identifies the frame from which the sub-band was generated, thecomponent of the frame (e.g., whether it is the low-low sub-bandcomponent, the high-high sub-band component, and so forth), and thelength of the stored data packet. When the sub-bands are retrieved fromstorage, the image capture accelerator 120 identifies the sub-bandsusing the headers. In another embodiment, the compression engine 124stores a file pointer identifying the location of each sub-band instorage.

By generating and storing the reference to the location of each sub-bandin storage, the compression engine 124 enables retrieval of any sub-bandof image data. Accordingly, the compression engine 124 can write thesub-bands to storage as they are generated, rather than storing eachsub-band as a unique file or buffering the sub-bands for each frame andstoring the image data for the frame in a contiguous block.

As described above, the image capture accelerator 120 includes anentropy coder 602 configured to encode decimated image data and generatean encoded video. To improve processing time, one embodiment of theimage capture accelerator 120 includes multiple entropy coders 602operating in parallel to encode an image. FIG. 17 illustrates anembodiment of the ICA 120 with two entropy coders 602A and 602B, eachencoding a portion of the decimated image data output by the decimator600. Other embodiments of the ICA 120 may include additional encoders.

The decimator 600 decimates the raw image data 1700 and outputsdecimated image data 1702 to the entropy coders 602A and 602B. Thedecimator 600 can split the image frame into multiple sub-frames byvertically splitting the frames into two unequal sections, horizontallysplitting the frame into two unequal sections, vertically orhorizontally splitting the frame into more than two vertical sections,or both vertically and horizontally splitting the frame into a series ofrectangles of various widths and heights. The entropy coders 602A and602B each receive one or more of the image sections for encoding. Forexample, the entropy coder 602A encodes a left half of each frame ofvideo data, while the entropy coder 602B encodes a right half of eachframe. By each encoding a portion of each video frame, the multipleentropy coders 602 operating in parallel in this embodiment of the ICA120 decrease processing time used to encode the video.

The decimator 600 sends each entropy coder 602 extra pixel values beyondthe edge of each sub-frame. For example, the decimator 600 divides animage of resolution 3840×2160 vertically into two sub-frames, eachhaving 1920×2160 pixels, and sends each entropy coder 602 an extra twopixels beyond the boundary between the two sub-frames. That is, eachentropy coder 602 receives image data having 1922×2160 pixels.Accordingly, a portion of the decimated image data 1702 is sent tomultiple entropy coders 602. The decimator 600 may also pass eachentropy coder 602 an identifier of the sub-frame's position relative tothe entire frame.

The entropy coders 602 encode the sub-frames received from the decimator600. In one embodiment, the entropy coders 602 perform VC-5 encoding onrespective portions of the decimated image data 1702. In general, theentropy coders 602 apply a border formula and an interior formula to thedecimated image data 1702 to generate encoded image data. The borderformula is applied to the one pixel-wide border on each of the top,bottom, left, and right sides of the frame, and the interior formula isapplied to other pixels of the frame. For example, one embodiment of theentropy coders 602 apply the following wavelet transform formula at theleft column of a row or the top row of a column of image data:

H ₀ =ash(5X ₀−11X ₁+4X ₂+4X ₃ −X ₄ −X ₅+4,3  (1)

At the right column of a row or the bottom row of a column of imagedata, one embodiment of the entropy coders 602 apply the followingwavelet transform formula:

H _(n/2-1) =ash(5X _(n-1)−11X _(n-2)+4X _(n-3)+4X _(n-4) −X _(n-5) −X_(n-6)+4,3)  (2)

Finally, the interior wavelet transform formula applied by oneembodiment of the entropy coder 602 to image data in the interior of arow or column is as follows:

${H_{i} = {X_{{2i} + 2} - X_{{2i} + 3} + {{ash}\left( {{X_{{2i} + 4} + X_{{2i} + 5} - \left( {X_{2i} + X_{{2i} + 1}} \right) + 4},3} \right)}}},{i = 1},2,\ldots \mspace{14mu},{\frac{n}{2} - 2}$

If the image data is split into multiple sub-frames and processed inparallel by two or more entropy coders 602, the entropy coders 602 applythe interior formula (equation 3) to boundaries between the sub-framesso that the same wavelet transform values are produced along theboundaries as would have been produced had the image been encoded as asingle frame. Each entropy coder 502 uses the extra pixels values beyondthe edge of a sub-frame to encode the image data at the boundary usingthe interior wavelet transform formula. The entropy coders 602 thereforecollectively generate the same number of wavelet coefficients for theframe as would have been generated had the image been encoded as asingle frame. Moreover, the entropy coders 602 only enable the borderformulas (equations 1 and 2) for the boundaries of the sub-frames thatcorrespond to the borders of the entire frame. Thus, if a frame is splitboth horizontally and vertically three or more times, some entropycoders 602 may not use the border formulas to encode their respectivesub-frames.

FIG. 18a illustrates a first embodiment of an image capture acceleratormemory sharing architecture. In the embodiment of FIG. 18a , an ICA 1810receives image data 1805, and either provides the image data 1805 to anISP 1820, stores the image data 1805 in a memory 1830 communicativelycoupled to the ICA 1810, or processes the image data 1805. The processedimage data can be subsequently output to the ISP 1820 or stored in thememory 1830.

In the embodiment of FIG. 18a , the image data 1805 or processed imagedata stored at the memory 1830 is accessed by the ISP 1820 via the ICA1810. In such embodiments, the data bus between the ICA 1810 and thememory 1830 can be of a higher bandwidth than the data bus between theISP 1820 and the memory 1830. Similarly, the I/O controller of the ICA1810 can be faster than the I/O controller of the ISP 1820. In suchembodiments, the ICA 1810 can receive image data 1805 and can write thereceived image data 1805 to the memory 1830 at a first data rate, andthe ICA 1810 can access image data (either the received image data 1805or image data processed by the ICA 1810) stored at the memory 1830 andcan output the accessed image data to the ISP 1820 at a second data rateslower than the first data rate. Such embodiments allow for a camerasystem to capture image data at a faster rate than the processing rateof the ISP 1820.

FIG. 18b illustrates a second embodiment of an image capture acceleratormemory sharing architecture. In the embodiment of FIG. 18b , the ICA1860 can receive image data 1855 and can provide the received image data1855 to the ISP 1870 or the memory 1890 via a mux 1880. The ISP 1870 canreceive image data from the ICA 1860, or can access image data stored atthe memory 1890 via the mux 1880. The ICA 1860, the ISP 1870, or anexternal controller not illustrated in FIG. 18b can select the mux input(and accordingly, the ICA 1860 or the ISP 1870) to couple to the muxoutput. The embodiment of FIG. 18b allows the ICA 1860 to receive andwrite the image data 1855 to the memory 1890 at a first data rate andallows the ISP 1870 to access the image data 1855 from the memory 1890to a second data rate slower than the first data rate.

FIG. 19 illustrates an embodiment of an image capture accelerator withon-chip transcoding functionality, such as resolution and frame ratedownscaling and resolution upscaling. The ICA 1900 includes a downscaleengine 1910, an upscale engine 1920, an H.264 engine 1930, and a VC-5engine 1940. The downscale engine 1910 can downscale the resolution ofdecimated video by outputting a low/low sub-band of the decimated video.For example, for a low/low sub-band of decimated video, the downscaleengine 1910 can output the low/low sub-band of decimated video insteaddecoding the decimated video to produce the video at full resolution.The downscale engine 1910 can downscale the frame rate of decimatedvideo by removing frames from the decimated video. For example, thedownscale engine 1910 can downscale 4 k resolution 240 fps video into1080p resolution 120 fps video by outputting the low/low sub-band ofevery other frame of video.

The upscale engine 1920 can upscale the resolution of decimated videowith a low/low sub-band encoded as H.264 video and with high/low,low/high, and high/high sub-bands encoded as VC-5 video. In suchembodiments, the low/low sub-band includes 4 color channels, eachencoded as H.264 video. To upscale the resolution of such video, theupscale engine 1920 decodes the color channels of the low/low sub-bandusing the H.264 engine 1930 and combines the decoded color channels intothe Bayer color space. The upscale engine 1920 decodes the correspondinghigh/low, low/high, and high-high VC-5 encoded sub-bands using the VC-5engine 1940, and combines the decoded low/low sub-band with the decodedhigh/low, low/high, and high/high sub-bands to create upscaledresolution video. For instance, for a 1080p resolution low/low sub-band,the low/low sub-band and corresponding high/low, low/high, and high/highsub-bands are decoded and combined to create 4 k resolution video.

Additional Configuration Considerations

The embodiments described herein provide systems and methods foraccelerating image capture and storage in an image capture system. Byaccelerating image capture and storage, the image capture systems cancapture images or videos at high frame rates and resolutions because theimage capture systems are not limited by the capabilities of imagesignal processors. Moreover, accelerated capturing and storing mayreduce power consumption of image capture systems, improving batterylife of cameras including the accelerated image capture systems.

Throughout this specification, some embodiments have used the expression“coupled” along with its derivatives. The term “coupled” as used hereinis not necessarily limited to two or more elements being in directphysical or electrical contact. Rather, the term “coupled” may alsoencompass two or more elements are not in direct contact with eachother, but yet still co-operate or interact with each others.

Likewise, as used herein, the terms “comprises,” “including,”“includes,” “including,” “has,” “having” or any other variation thereof,are intended to cover a non-exclusive inclusion. For example, a process,method, article, or apparatus that comprises a list of elements is notnecessarily limited to only those elements but may include otherelements not expressly listed or inherent to such process, method,article, or apparatus.

In addition, use of the “a” or “an” are employed to describe elementsand components of the embodiments herein. This is done merely forconvenience and to give a general sense of the invention. Thisdescription should be read to include one or at least one and thesingular also includes the plural unless it is obvious that it is meantotherwise.

Finally, as used herein any reference to “one embodiment” or “anembodiment” means that a particular element, feature, structure, orcharacteristic described in connection with the embodiment is includedin at least one embodiment. The appearances of the phrase “in oneembodiment” in various places in the specification are not necessarilyall referring to the same embodiment.

Upon reading this disclosure, those of skill in the art will appreciatestill additional alternative structural and functional designs for animage capture accelerator as disclosed from the principles herein. Thus,while particular embodiments and applications have been illustrated anddescribed, it is to be understood that the disclosed embodiments are notlimited to the precise construction and components disclosed herein.Various modifications, changes and variations, which will be apparent tothose skilled in the art, may be made in the arrangement, operation anddetails of the method and apparatus disclosed herein without departingfrom the spirit and scope defined in the appended claims.

What is claimed is:
 1. A camera system, comprising: an image sensor chipconfigured to produce image data representative of light incident uponthe image sensor chip; an image signal processor chip (“ISP”) configuredto process the image data; and an image capture accelerator chip (“ICA”)coupled between the image sensor chip and the ISP, the image captureaccelerator comprising: an input configured to receive the image datafrom the image sensor chip; an encoder configured to, when the camerasystem is configured to operate in an accelerated capture mode, encodethe received image data to produce encoded image data; a memoryconfigured to store the encoded image data; a decoder configured to,when the camera system is configured to operate in a standby mode:access the encoded image data from the memory; and decode the encodedimage data to produce decoded image data; and an output configured to:when the camera system is configured to operate in a normal capturemode, output the received image data to the ISP; and when the camerasystem is configured to operate in the standby mode, output the decodedimage data to the ISP.
 2. The camera system of claim 1, wherein theencoder comprises a wavelet encoder, and wherein the decoder comprises awavelet decoder.
 3. The camera system of claim 1, wherein the encodedimage data is not a displayable image format.
 4. The camera system ofclaim 1, wherein the camera system is configured to operate in theaccelerated captured mode in response to a rate of capturing image databy the image sensor chip exceeding a threshold.
 5. The camera system ofclaim 1, wherein the ICA further comprises a memory controller coupledto the encoder, the decoder, and the memory.
 6. The camera system ofclaim 5, wherein the memory includes a combination read/writecommunication bus coupled to the memory controller, the memorycontroller configured to write the encoded image data to the memory viathe combination read/write communication bus in response to a requestfrom the encoder, and configured to read the encoded image data from thememory via the combination read/write communication bus in response to arequest from the decoder.
 7. A method for capturing images by a camerasystem, comprising: capturing, by an image sensor chip, light incidentupon the image sensor to produce image data representative of thecaptured light; when the camera system is configured to operate in anormal capture mode: outputting the image data to an image signalprocessing chip (“ISP”); when the camera system is configured to operatein an accelerated capture mode: encoding, by an encoder of an imagecapture accelerator chip (“ICA”), the image data to produce encodedimage data; and storing, in a memory of the ICA, the encoded image data;and when the camera system is configured to operate in a standby mode:accessing the encoded image data from the memory; decoding, by a decoderof the ICA, the encoded image data to produce decoded image data; andoutputting the decoded image data to the ISP.
 8. The method of claim 7,wherein the encoder comprises a wavelet encoder, and wherein the decodercomprises a wavelet decoder.
 9. The method of claim 7, wherein theencoded image data is not a displayable image format.
 10. The method ofclaim 7, wherein the camera system is configured to operate in theaccelerated captured mode in response to a rate of capturing image databy the image sensor chip exceeding a threshold.
 11. The method of claim7, wherein the ICA further comprises a memory controller coupled to theencoder, the decoder, and the memory.
 12. The method of claim 11,wherein the memory includes a combination read/write communication buscoupled to the memory controller, the memory controller configured towrite the encoded image data to the memory via the combinationread/write communication bus in response to a request from the encoder,and configured to read the encoded image data from the memory via thecombination read/write communication bus in response to a request fromthe decoder.
 13. An image capture accelerator integrated circuit(“ICA”), comprising: an input configured to receive image data capturedby an image sensor chip; an encoder configured to, when the ICA isconfigured to operate in an accelerated capture mode, encode thereceived image data to produce encoded image data; a memory configuredto store the encoded image data; a decoder configured to, when the ICAis configured to operate in a standby mode: access the encoded imagedata from the memory; and decode the encoded image data to producedecoded image data; and an output configured to: when the ICA isconfigured to operate in a normal capture mode, output the receivedimage data to an image signal processor chip (“ISP”); and when the ICAis configured to operate in the standby mode, output the decoded imagedata to the ISP.
 14. The ICA of claim 13, wherein the encoder comprisesa wavelet encoder, and wherein the decoder comprises a wavelet decoder.15. The ICA of claim 13, wherein the encoded image data is not adisplayable image format.
 16. The ICA of claim 13, wherein the ICA isconfigured to operate in the accelerated captured mode in response to arate of capturing image data by the image sensor chip exceeding athreshold.
 17. The ICA of claim 13, wherein the ICA further comprises amemory controller coupled to the encoder, the decoder, and the memory.18. The ICA of claim 17, wherein the memory includes a combinationread/write communication bus coupled to the memory controller, thememory controller configured to write the encoded image data to thememory via the combination read/write communication bus in response to arequest from the encoder, and configured to read the encoded image datafrom the memory via the combination read/write communication bus inresponse to a request from the decoder.